package cn.seqdata.cxf.repos;

import javax.ws.rs.DELETE;
import javax.ws.rs.DefaultValue;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.QueryParam;

import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import cn.seqdata.jpa.JpaAuditableObject;

/** 针对JpaObject的cxf接口 */
public interface JaxrsObjectRepository<T extends JpaAuditableObject> extends JaxrsRepository<T, Long> {
	Pageable getPageable();

	@GET
	@Path("/{id}")
	default T findOne(@PathParam("id") Long id) {
		return getRepository().findOne(id);
	}

	@DELETE
	@Path("/{id}")
	default void delete(@PathParam("id") Long id) {
		getRepository().delete(id);
	}

	@GET
	@Path("/search")
	Page<T> search(@QueryParam("q") @DefaultValue("") String keyword);
}
